📅 2023. 03. 25
lodash/cloneDeep과 immer는 모두 JavaScript에서 불변 데이터 작업을 위해 사용되는 라이브러리이지만, 목적과 사용 사례가 다릅니다.
lodash는 자바스크립트에서 널리 사용되는 유틸리티 라이브러리로, 여러 가지 유용한 함수를 제공하며, 그 중 하나가 cloneDeep
입니다. cloneDeep
함수는 주어진 객체 또는 배열의 심층 복사본을 생성하여 복사본을 변경할 때 원본 데이터가 변경되지 않도록 보장합니다. 이 함수는 원본을 수정하지 않고 객체 또는 배열의 새 인스턴스를 만들어야 할 때 유용합니다.
lodash
라이브러리에서 cloneDeep
함수만 가져와서 독립적으로 사용할 수 있습니다.immer는 불변 데이터 구조로 작업하기 위해 특별히 설계된 라이브러리입니다. 기본 상태를 취하는 생성 함수와 상태의 변경 사항을 설명하는 콜백 함수를 제공합니다. Immer는 프록시 메커니즘을 사용하여 변경 사항을 추적하고 업데이트된 새 상태를 생성합니다. 이 접근 방식을 사용하면 원래 상태가 수정되지 않은 상태로 유지되면서도 상태를 직접 변경하는 것처럼 보이는 코드를 작성할 수 있습니다.
cloneDeep
보다 유연성이 떨어집니다.요약하자면, 간단한 깊은 복사 기능이 필요하다면 lodash/cloneDeep
이 좋은 선택입니다. 그러나 복잡한 상태 관리 작업을 하거나 불변 데이터를 처리할 때 더 나은 성능이 필요하다면 immer가 더 적합한 선택입니다.